<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>GROOPS - PreprocessingVariationalEquation</title>

    <!-- JQuery and Popper -->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>

    <!-- Bootstrap -->
    <!-- https://getbootstrap.com/docs/4.1/examples/ -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <!-- Mathjax -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({tex2jax: {inlineMath: [ ['$','$'] ],
                                  displayMath: [ ["\\[","\\]"] ],
                                  processEscapes: true},
                        TeX:     {Macros: {M: ["{\\mathbf #1}",1]},
                                  equationNumbers: {autoNumber: "all"}  }});
    </script>
    <script async src="https://cdn.jsdelivr.net/npm/mathjax@2.7.7/MathJax.js?config=TeX-AMS_CHTML" integrity="sha384-e/4/LvThKH1gwzXhdbY2AsjR3rm7LHWyhIG5C0jiRfn8AN2eTN5ILeztWw0H9jmN" crossorigin="anonymous"></script>

    <!-- lunr -->
    <script src="https://cdn.jsdelivr.net/npm/lunr@2.3.8/lunr.min.js" integrity="sha384-vRQ9bDyE0Wnu+lMfm57BlYLO0/XauFuKpVsZPs7KEDwYKktWi5+Kz3MP8++DFlRY" crossorigin="anonymous"></script>

    <!-- Mustache -->
    <script src="https://cdn.jsdelivr.net/npm/mustache@4.0.1/mustache.min.js" integrity="sha384-0PLEZVBpOQ+Kqw3anJWSNWvRxpEFt02tSpBvyRsA4WcvX/OTldWdXxGLVLvh954H" crossorigin="anonymous"></script>

    <!-- GROOPS Stylesheet -->
    <link rel="stylesheet" href="static/groops.css"/>

    <!-- icon -->
    <link rel="icon" href="static/groops_icon.png">

</head>
<body>
    <header>
        <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
            <div class="container">
              <a class="navbar-brand" href="index.html"><img class="logo" src="static/groops_white.svg"></a>
              <div class="collapse navbar-collapse" id="mainNavbar">
                <ul class="navbar-nav mr-auto">
                  <li class="nav-item">
                    <a class="nav-link" href="programType.html">Programs</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="classes.html">Classes</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="general.parser.html">Parser</a>
                  </li>
                  <li class="nav-item">
                    <a class="nav-link" href="general.fileFormat.html">File Formats</a>
                  </li>
                </ul>
              </div>
                <form class="form-inline my-2 my-lg-0" action="search.html" id="searchTools">
                  <input class="form-control mr-sm-2" placeholder="Search" name="searchTerms" method="GET" value="" type="text" id="searchBox">
                  <button class="btn btn-secondary my-2 my-sm-0" type="submit" id="searchButton">Search</button>
                </form>
              <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainNavbar" aria-controls="mainNavbar" aria-expanded="false" aria-label="Toggle navigation" style="">
                <span class="navbar-toggler-icon"></span>
              </button>
            </div>
        </nav>
    </header>
    <main class="container px-0 pt-2 top-buffer">
        <div id="content" class="container">
            <h1>PreprocessingVariationalEquation</h1><p>

This program integrates an orbit dynamically using the given forces and setup the state transition matrix
for each time step. These are the prerequisite for a least squares adjustement (e.g. gravity field determination) using
the variational equation approach. The variational equations are computed arc wise as defined by <a class="groops-class" href="fileFormat_instrument.html">inputfileOrbit</a>.
This means for each arc new initial state parameters are setup.</p><p>In a first step the <a class="groops-class" href="forcesType.html">forces</a> acting on the satellite are evaluated at the apriori positions given
by <a class="groops-class" href="fileFormat_instrument.html">inputfileOrbit</a>. Non-conservative forces like solar radiation pressure needs the orientation of the
satellite (<a class="groops-class" href="fileFormat_instrument.html">inputfileStarCamera</a>) and additional a satellite macro model (<strong class="groops-config-element">satelliteModel</strong>)
with the surface properties. Furthermore <a class="groops-class" href="fileFormat_instrument.html">inputfileAccelerometer</a> observations are also considered.</p><p>In a second step the accelerations are integrated twice to an dynamic orbit using a moving polynomial with the degree
<strong class="groops-config-element">integrationDegree</strong>. The orbit is corrected to be self-consistent. This means the forces should be evaluated
at the new integrated positions instead of the apriori ones. This correction is computed in a linear approximation
using the gradient of the forces with respect to the positions (<strong class="groops-config-element">gradientfield</strong>). As this term is small generally
only the largest force components has to be considered. A low degree spherical harmonic expansion of the static gravity
field (about up to degree 5) is sufficient in almost all cases. In this step also the state transition matrix (the partial
derivatices of the current state, position and velocity) with respect to the initial state is computed.
The integrated orbit together with the state transitions are stored in <a class="groops-class" href="fileFormat_variationalEquation.html">outputfileVariational</a>,
the integrated orbit only in <a class="groops-class" href="fileFormat_instrument.html">outputfileOrbit</a>.</p><p>To improve the numerical stability a reference ellipse can be reduced beforehand using Enke's method (<strong class="groops-config-element">useEnke</strong>).
Mathematically the result is the same, but as the large central term is removed before and restored
afterwards more digits are available for the computation.</p><p>The integrated orbit should be fitted to observations afterwards by the programs
<a class="groops-program" href="PreprocessingVariationalEquationOrbitFit.html">PreprocessingVariationalEquationOrbitFit</a> and/or <a class="groops-program" href="PreprocessingVariationalEquationSstFit.html">PreprocessingVariationalEquationSstFit</a>.
They apply a least squares adjustment by estimating some satellite parameters (e.g. an accelerometer bias).
If the fitted orbit is too far away from the original <a class="groops-class" href="fileFormat_instrument.html">inputfileOrbit</a> the linearization may not be
accurate enough. In this case <a class="groops-program" href="PreprocessingVariationalEquation.html">PreprocessingVariationalEquation</a> should be run again with the fitted orbit
as <a class="groops-class" href="fileFormat_instrument.html">inputfileOrbit</a> and introducing the <strong class="groops-config-element">estimatedParameters</strong> as additional forces.
</p>
<table class="table table-hover">
<tr class="table-primary"><th>Name</th><th>Type</th><th>Annotation</th></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">outputfileVariational</div></div></td><td>filename</td><td>approximate position and integrated state matrix</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">outputfileOrbit</div></div></td><td>filename</td><td>integrated orbit</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileSatelliteModel</div></div></td><td>filename</td><td>satellite macro model</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">inputfileOrbit</div></div></td><td>filename</td><td>approximate position, used to evaluate the force</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">inputfileStarCamera</div></div></td><td>filename</td><td>rotation from body frame to CRF</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">inputfileAccelerometer</div></div></td><td>filename</td><td>non-gravitational forces in satellite reference frame</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">forces</div></div></td><td><a href="forcesType.html">forces</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">estimatedParameters</div></div></td><td>sequence</td><td>satellite parameters e.g. from orbit fit</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-1"><div class="h-100 config mustset-unbounded">parametrizationAcceleration</div></div></td><td><a href="parametrizationAccelerationType.html">parametrizationAcceleration</a></td><td>orbit force parameters</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-1"><div class="h-100 config mustset">inputfileParameter</div></div></td><td>filename</td><td>estimated orbit force parameters</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset">earthRotation</div></div></td><td><a href="earthRotationType.html">earthRotation</a></td><td></td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">ephemerides</div></div></td><td><a href="ephemeridesType.html">ephemerides</a></td><td></td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config mustset-unbounded">gradientfield</div></div></td><td><a href="gravityfieldType.html">gravityfield</a></td><td>low order field to estimate the change of the gravity by position adjustement</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">integrationDegree</div></div></td><td>uint</td><td>integration of forces by polynomial approximation of degree n</td></tr>
<tr class="table-light"><td class="m-0"><div class="h-100 config-tree depth-0"><div class="h-100 config optional">useEnke</div></div></td><td>sequence</td><td>integrate differential forces to an elliptical reference trajectory</td></tr>
<tr class=""><td class="m-0"><div class="h-100 config-tree depth-1"><div class="h-100 config optional">GM</div></div></td><td>double</td><td>geocentric gravitational constant used for elliptical reference orbit</td></tr>
</table>
This program is <a class="groops-ref" href="general.parallelization.html">parallelized</a>.

        </div>
    </main>
</body>
</html>
